package cn.data.collection.util;

import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class UnicodeCharUtil {
	/**
	 * 获取当前的路径
	 * 
	 * @return
	 */
	public static String getCurPath() {
		String path = null;
		File dir = new File("");
		try {
			path = dir.getAbsolutePath();
			System.out.println(dir.getCanonicalPath());
			System.out.println(dir.getAbsolutePath());
		} catch (Exception e) {
			// TODO: handle exception
		}
		return path;
	}

	/**
	 * 修改字符串中的unicode码
	 * 
	 * @param s
	 *            源str
	 * @return 修改后的str
	 */
	public static String decode2(String s) {
		StringBuilder sb = new StringBuilder(s.length());
		char[] chars = s.toCharArray();
		for (int i = 0; i < chars.length; i++) {
			char c = chars[i];
			if (c == '\\' && chars[i + 1] == 'u') {
				char cc = 0;
				for (int j = 0; j < 4; j++) {
					char ch = Character.toLowerCase(chars[i + 2 + j]);
					if ('0' <= ch && ch <= '9' || 'a' <= ch && ch <= 'f') {
						cc |= (Character.digit(ch, 16) << (3 - j) * 4);
					} else {
						cc = 0;
						break;
					}
				}
				if (cc > 0) {
					i += 5;
					sb.append(cc);
					continue;
				}
			}
			sb.append(c);
		}
		return sb.toString();
	}

	/**
	 * 获取修复后的字符串
	 * 
	 * @param str
	 * @return
	 */
	public static String getFixStr(String str) {
		String ret = str;
		Pattern p = Pattern.compile("(\\\\u.{4})");
		Matcher m = p.matcher(ret);
		while (m.find()) {
			String xxx = m.group(0);
			ret = str.replaceAll("\\" + xxx, decode2(xxx));
		}
		return ret;
	}
	
	public static void main(String[] args) throws Exception {
		System.out.print(getFixStr("0C/c0NBWoshfIOYRV2eGbg\u003d\u003d"));
	}
}
